#include "best.h"

struct t_candidato{
	int num;
	int tipo;
	struct t_candidato *prox;
};

struct t_aresta_padrao{
	int qnt;
	t_aresta *arestas;
	struct t_aresta_padrao *prox;
};

typedef struct{
	struct t_aresta_padrao *padroes;
	int qnt;
}Arestas_Padroes;


//tipo 0, só candidato
//tipo 1, so anterior
//tipo 2, candidato e anterior

typedef struct{
	t_aresta *conjunto;
	//struct t_candidato anteriores[MAX_NOS+1];
	struct t_candidato candidatos[MAX_NOS+1];
	int qntArestas;
	int suporte;
}Padrao;

typedef struct{
	Padrao *conjunto;
	int qnt;
}Padroes;


void addArestaAnteriores(Padrao *padrao,t_aresta aresta);

void limpaAnteriores(Padrao *padrao);

void addArestaPadrao(Padrao *padrao,t_aresta aresta);

void poolwritefile(Melhores elite);

void findpatterns(Melhores elite,Padroes *padroes, int min_sup, int n,double *t_miner);

char* itoa(int val, int base);

t_aresta get_aresta(Melhores elite,int id);

t_aresta get_aresta_by_no(Padrao padrao,int no);

void load_padroes(Melhores elite,Padroes *padroes);

void novo_padrao(Padroes *padroes,t_aresta *arestas,int suporte,int qntArestas);

void nova_aresta(t_aresta **arestas,t_aresta aresta,int *qnt);

void freePadroes(Padroes *padrao);
